#include <stdio.h>
//if((10*a[i]+a[i+1])*a[i+2]+(100*a[i+3]+10*a[i+4]+a[i+5])/a[i+6]-(10*a[i+7]+a[i+8])==0 && a[i+2]!=1 && a[i+6]!=1)
int n,mark[100],a[10];
void dfs(int step)
{
	if(step>n)
	{
		for(int i=1;i<=n;i++)
		{
			printf("%d ",a[i]);
			if(i==n)
			printf("\n");
		}	
	}
	else
	{
		for(int i=1;i<=n;i++)
		{
			if(mark[i]==0)
			{
				mark[i]=1;
				a[step]=i;
				dfs(step+1);
				mark[i]=0;
			}	
		}
	}
}
int main()
{
	scanf("%d",&n);
	dfs(1);
	return 0;
}